for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
const check = require('check-types');
const { Guard } = require('./guard');
/**
* An edge object represents a edge between two nodes in a graph.
*/
class JGFEdge {
* Constructor
* @param {string} source Source node id
* @param {string} target Target node id
* @param {string,null} relation Edge relation (AKA 'relationship type')
* @param {string,null} label Edge label (the display name of the edge)
* @param {object,null} metadata Custom edge meta data
* @param {boolean,null} directed true for a directed edge, false for undirected
constructor(source, target, relation = null, label = null, metadata = null, directed = true) {
this.source = source;
this.target = target;
this.relation = relation;
this.label = label;
this.metadata = metadata;
this.directed = directed;
}
set source(source) {
Guard.assertNonEmptyStringParameter('source', source);
this._source = source;
get source() {
return this._source;
set target(target) {
Guard.assertNonEmptyStringParameter('target', target);
this._target = target;
get target() {
return this._target;
set metadata(metadata) {
if (check.assigned(metadata)) {
Guard.assertValidMetadata(metadata);
this._metadata = metadata;
get metadata() {
return this._metadata;
set directed(directed) {
Guard.assertValidDirected(directed);
this._directed = directed;
get directed() {
return this._directed;
module.exports = {
JGFEdge,
};